#ifndef RM_ECAT_H_
#define RM_ECAT_H_

#include <ethercat.h>

#ifndef UINT8
#define UINT8                                     unsigned char
#endif


#ifndef UINT16
#define UINT16                                    unsigned short
#endif

#ifndef UINT32
#define UINT32                                    unsigned int	//long
#endif

#define     BOOLEAN(x)                  unsigned short(x):1 /**< \brief Marco to define BOOLEAN object entry*/
#define     BIT1(x)                     unsigned short(x):1 /**< \brief Marco to define BIT1 object entry*/
#define     BIT2(x)                     unsigned short(x):2 /**< \brief Marco to define BIT2 object entry*/
#define     BIT3(x)                     unsigned short(x):3 /**< \brief Marco to define BIT3 object entry*/
#define     BIT4(x)                     unsigned short(x):4 /**< \brief Marco to define BIT4 object entry*/
#define     BIT5(x)                     unsigned short(x):5 /**< \brief Marco to define BIT5 object entry*/
#define     BIT6(x)                     unsigned short(x):6 /**< \brief Marco to define BIT5 object entry*/
#define     BIT7(x)                     unsigned short(x):7 /**< \brief Marco to define BIT6 object entry*/
#define     BIT8(x)                     unsigned short(x):8 /**< \brief Marco to define BIT7 object entry*/
#define     ALIGN0(x)
#define     ALIGN1(x)                   unsigned short(x):1; /**< \brief Marco to define ALIGN1 object entry*/
#define     ALIGN2(x)                   unsigned short(x):2; /**< \brief Marco to define ALIGN2 object entry*/
#define     ALIGN3(x)                   unsigned short(x):3; /**< \brief Marco to define ALIGN3 object entry*/
#define     ALIGN4(x)                   unsigned short(x):4; /**< \brief Marco to define ALIGN4 object entry*/
#define     ALIGN5(x)                   unsigned short(x):5; /**< \brief Marco to define ALIGN5 object entry*/
#define     ALIGN6(x)                   unsigned short(x):6; /**< \brief Marco to define ALIGN6 object entry*/
#define     ALIGN7(x)                   unsigned short(x):7; /**< \brief Marco to define ALIGN7 object entry*/
#define     ALIGN8(x)                   unsigned short(x):8; /**< \brief Marco to define ALIGN8 object entry*/
#define     ALIGN9(x)                   unsigned short(x):9; /**< \brief Marco to define ALIGN9 object entry*/
#define     ALIGN10(x)                  unsigned short(x):10; /**< \brief Marco to define ALIGN10 object entry*/
#define     ALIGN11(x)                  unsigned short(x):11; /**< \brief Marco to define ALIGN11 object entry*/
#define     ALIGN12(x)                  unsigned short(x):12; /**< \brief Marco to define ALIGN12 object entry*/
#define     ALIGN13(x)                  unsigned short(x):13; /**< \brief Marco to define ALIGN13 object entry*/
#define     ALIGN14(x)                  unsigned short(x):14; /**< \brief Marco to define ALIGN14 object entry*/
#define     ALIGN15(x)                  unsigned short(x):15; /**< \brief Marco to define ALIGN15 object entry*/

#ifndef OBJ_STRUCT_PACKED_START
#define OBJ_STRUCT_PACKED_START 
#endif

#ifndef OBJ_STRUCT_PACKED_END
#define OBJ_STRUCT_PACKED_END 
#endif


#pragma pack(push, 1)

typedef struct  {
    uint32 channel[8*32];
} output_t;

#pragma pack(pop)

#pragma pack(push, 1)
typedef struct  {
    uint32 info[8];
}  input_t;
#pragma pack(pop)


#endif
